package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import juego.Juego;
import juego.Jugador;
import vistas.InterfazFinDeJuego;
import vistas.InterfazMenu;
import vistas.VentanaMenu;


public class ControladorFinDeJuego extends Controlador implements ActionListener {
    private InterfazFinDeJuego vista;
    private Juego modelo;
    
    public ControladorFinDeJuego (InterfazFinDeJuego vista, Juego modelo) {
        this.vista = vista;
        this.modelo = modelo;
        vista.setSaludo(modelo.getJugador().getNickname());
        vista.setTituloPartida(modelo.getJugador().getNivel());
        mostrarResultados();
    }

    @Override
    public void actionPerformed (ActionEvent evento) {
        if (evento.getActionCommand().equals("Jugar otra vez")) {
            Juego juegoNuevo = new Juego();
            String nombre = modelo.getJugador().getNickname();
            Jugador jugador = new Jugador(nombre);
            juegoNuevo.setJugador(jugador);
            
            InterfazMenu vistaMenu = new VentanaMenu();
            ControladorMenu controladorMenu = new ControladorMenu (vistaMenu, juegoNuevo);
            vistaMenu.setControlador (controladorMenu);
            vistaMenu.arrancar();
            vista.cerrar();
        }
    }

    private void mostrarResultados() {
        if (modelo.jugadorHaLlegadoAlaMeta()) {
            Jugador jugador = modelo.getJugador();
            int movimientosHechos = jugador.getVehiculo().getCantidadDeMovimientos();
            int movimientosMaximos = jugador.getCantidadDeMovimientosMaximos();
            int movimientosRestantes = movimientosMaximos - movimientosHechos;
            int puntaje = jugador.getPuntaje();
            vista.setResultadoGanador(movimientosRestantes, puntaje);
        }
        else vista.setResultadoPerdedor();
    }
}
